package cn.xiaomubiao.oschine.base;

import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;

import cn.xiaomubiao.oschine.FragmentFactory;

/**
 * 详情页面的vp适配器
 * 供详情页面有Viewpager的数据适配器继承 (没人用到
 *
 * @author 张伟斌
 */

public abstract class BaseDetailVpAdapter extends FragmentStatePagerAdapter {

    private Context mContext; //上下文
    private String[] TabNames; //tablayout上的文本

    public BaseDetailVpAdapter(Context mContext, FragmentManager fm) {
        super(fm);
        this.mContext = mContext;

        // tablayout上的文本,从array.xml中获取,由子类重写返回
        TabNames = getTabNames();

    }

    // 返回对应位置上要显示的Fragment
    @Override
    public Fragment getItem(int position) {
        // 首先设置String.xml中的对应Fragment类的全路径名称
        int fragmentClassNames = getFragmentClassNames();
        // 进行设置
        FragmentFactory.setFragmentClass(fragmentClassNames);

        // 接着就开始获取Fragment对象
        // 通过工厂获取指定位置的Fragment对象
        Fragment advanceFragment = FragmentFactory.createAdvanceFragment(position);

        // 返回显示
        return advanceFragment;

    }

    // vp中的视图个数
    @Override
    public int getCount() {
        return TabNames.length;

    }

    // tabLayout上的每一个文本
    @Override
    public CharSequence getPageTitle(int position) {
        return TabNames[position];
    }

    // 要求子类重写的 获取 想要显示的Fragment类的全路径名
    protected abstract int getFragmentClassNames();

    // 要求子类重写的 获取tabLayout中要显示的文本数组
    protected abstract String[] getTabNames();

}
